﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Controller;
using SBS;

namespace GUI
{
    public partial class OpretKunde : DesignChildForm
    {
        public bool Saved;

        public OpretKunde(bool edit)
        {
            InitializeComponent();

            KundeNummerTextBox.ReadOnly = !edit;
            HentKundebutton.Visible = edit;
            if (edit)
                this.toolStripLabel1.Text = "Rediger kunde";
            else
                this.toolStripLabel1.Text = "Opret kunde";
           
        }

        


        
        
        private void OpretKunde_Load(object sender, EventArgs e)
        {
            
            Vaerksted v = Vaerksted.GetInstance();
            v.OpretKunde();
        }

        private void HentOpretScooterButton_Click(object sender, EventArgs e)
        {

            Form f = new OpretScooter("");
            f.StartPosition = FormStartPosition.CenterScreen;
            f.Width = 290;
            f.Height = 290;
            f.ShowDialog();

            OpdaterScooterOversigt();
            
            

        }

        private void OpdaterScooterOversigt()
        {
            Vaerksted v = Vaerksted.GetInstance();

            var liste = from s in v.Kkatalog.AktivKunde.Scootere select new { RegistreringsNr = s.Value.RegNr, Mærke = s.Value.Certifikat.CertNavn, Model = s.Value.Model };

            ScooterOversigtDataGridView.DataSource = liste.ToList();
        }

        private void GemKundeButton_Click(object sender, EventArgs e)
        {
            Vaerksted v = Vaerksted.GetInstance();
            //Hvis det er en ny kunde
            if (KundeNummerTextBox.Text == "")
            {
                if (CheckKundeOplysninger())
                {
                    
                        int Knr = 0;
                        if (v.GemKunde(out Knr))
                        {
                            Saved = true;
                            v.Kkatalog.AktivKunde.Knr = Knr;
                            Close();
                        }
                        else
                        {
                            MessageBox.Show("Der opstod et problem med at skrive til databasen. Kunden er derfor ikke gemt.");
                        }
                    }
                   
            }
                
            //Hvis det er en eksisterende kunde der skal opdateres
            else
            {
                if (CheckKundeOplysninger())
                {
                    if (v.OpdaterKunde())
                    {
                        Saved = true;
                        Close();

                    }

                    else
                    {
                        MessageBox.Show("Der opstod et problem med at skrive til databasen. Kunden er derfor ikke gemt.");
                    }
                }
                else
                {
                    MessageBox.Show("Der er fejl i de indtastet data");
                }

               




            }
        }

        private bool CheckKundeOplysninger()
        {
            Vaerksted v = Vaerksted.GetInstance();
            if (v.Kkatalog.AktivKunde.Scootere.Count == 0)
            {
                MessageBox.Show("Du skal oprette kundens scooter(e) før du kan gemme kunden");
                return false;
            }

            else
            {


                if (SBS.Valider.KunBogstaver(FornavnTextBox.Text) && SBS.Valider.KunBogstaver(EfternavnTextBox.Text) && SBS.Valider.EmailAdresse(MailTextBox.Text) && SBS.Valider.KunHelTal(PostnummerTextBox.Text))
                {
                    v.Kkatalog.AktivKunde.Fornavn = FornavnTextBox.Text;
                    v.Kkatalog.AktivKunde.Efternavn = EfternavnTextBox.Text;

                    v.Kkatalog.AktivKunde.Mail = MailTextBox.Text;
                    v.Kkatalog.AktivKunde.Adresse = AdresseTextBox.Text;
                    v.Kkatalog.AktivKunde.Postnr = Convert.ToInt32(PostnummerTextBox.Text);
                    v.Kkatalog.AktivKunde.TlfNr = TelefonNummerTextBox.Text;

                    return true;
                }

                else
                {
                    MessageBox.Show("Kunde oplysninger er ikke i korrekt format");
                    return false;
                }

            }
        }



        private void TjekOmKundenErGemt(object sender, FormClosingEventArgs e)
        {
            if (!Saved)
            {
                DialogResult dl = MessageBox.Show("Du har ikke gemt din Kunde, vil du fortsætte uden at gemme?","Kunde ikke gemt",MessageBoxButtons.YesNo);
                if (dl == DialogResult.Yes)
                {
                    e.Cancel = false;

                }
                else
                    e.Cancel = true;
               
            }
        }

        private void HentByNavn(object sender, EventArgs e)
        {
            if (Valider.KunHelTal(PostnummerTextBox.Text))
            {
                Vaerksted v = Vaerksted.GetInstance();
                ByNavnTextBox.Text = v.Kkatalog.HentByNavn(int.Parse(PostnummerTextBox.Text));
            }
        }

        private void HentKundebutton_Click(object sender, EventArgs e)
        {
            Vaerksted v = Vaerksted.GetInstance();
            v.RedigeringAfKunde();
            //Henter kundeinfo ind i aktivkunde objektet i kundekataloget
            if (SBS.Valider.KunDecimalTal(KundeNummerTextBox.Text))
                v.HentKundeInfo(int.Parse(KundeNummerTextBox.Text));

            if (v.Kkatalog.AktivKunde != null)
            {

                VisKundeInfo();
                KundeNummerTextBox.ReadOnly = true;
                HentKundebutton.Visible = false;
                GemKundeButton.Text = "Opdater";
            }
            else
                MessageBox.Show("Kunde eksisterer ikke");
        }

        private void VisKundeInfo()
        {
            Vaerksted v = Vaerksted.GetInstance();
            FornavnTextBox.Text = v.Kkatalog.AktivKunde.Fornavn;
            EfternavnTextBox.Text = v.Kkatalog.AktivKunde.Efternavn;
            AdresseTextBox.Text = v.Kkatalog.AktivKunde.Adresse;
            PostnummerTextBox.Text = v.Kkatalog.AktivKunde.Postnr.ToString();
            ByNavnTextBox.Text = v.Kkatalog.AktivKunde.Bynavn;
            TelefonNummerTextBox.Text = v.Kkatalog.AktivKunde.TlfNr;
            MailTextBox.Text = v.Kkatalog.AktivKunde.Mail;

            var scootere = from s in v.Kkatalog.AktivKunde.Scootere select new { RegistreringsNr = s.Value.RegNr, Mærke = s.Value.Certifikat.CertNavn, Model = s.Value.Model };
            ScooterOversigtDataGridView.DataSource = scootere.ToList();
            




        }

        private void AnnullerButton_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void RedigerScooter(object sender, EventArgs e)
        {
            if (ScooterOversigtDataGridView.RowCount > 0)
            {
                Form f = new OpretScooter(ScooterOversigtDataGridView[0, ScooterOversigtDataGridView.CurrentRow.Index].Value.ToString());
                f.StartPosition = FormStartPosition.CenterScreen;
                f.Width = 290;
                f.Height = 290;
                f.ShowDialog();
                OpdaterScooterOversigt();
            }
        }

        

    }
}
